// 所有校验规则都写入此文件，如需新增校验规则，请在文件最后自行写入
// 不可擅自修改和删除原文件中的任意规则，如遇问题请先联系提供者。

// 字符长度
export function stringLength () {
  var stringLength = (rule, value, callback) => {
    // 校验规则
    var re = /^[\u4e00-\u9fa5_a-zA-Z0-9_\s]{3,20}$/
    if (!value) {
      callback(new Error('此项为必填项'))
    } else if (!re.test(value)) {
      var errMsg = '格式为：长度 3 到 20 个字符'
      callback(new Error(errMsg))
    } else {
      callback()
    }
  }
  return stringLength
}
// 身份证
export function card () {
  var card = function (rule, value, callback) {
    var re = /^(^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$)|(^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])((\d{4})|\d{3}[Xx])$)$/
    if (!value) {
      callback(new Error('此项为必填项'))
    } else if (!re.test(value) && value.length > 0) {
      return callback(new Error('请输入15或18位有效身份证号码'))
    } else {
      callback()
    }
  }
  return card
}
// 邮箱
export function email () {
  var email = function (rule, value, callback) {
    var re = /^([a-z0-9A-Z]+[-|\\.]?)+[a-z0-9A-Z]@([a-z0-9A-Z]+(-[a-z0-9A-Z]+)?\.)+[a-zA-Z]{2,}$/
    if (!value) {
      callback(new Error('此项为必填项'))
    } else if (!re.test(value)) {
      return callback(new Error('邮箱格式不正确'))
    } else {
      callback()
    }
  }
  return email
}
// 手机号
export function mobilePhone () {
  var mobilePhone = function (rule, value, callback) {
    var re = /^((14[0-9])|(16[0-9])|(17[0-9])|(19[0-9])|(14[0-9])|(13[0-9])|(15[0-9])|(18[0,5-9]))\d{8}$/
    if (!value) {
      callback(new Error('此项为必填项'))
    } else if (!re.test(value)) {
      callback(new Error('手机号码格式不正确'))
    } else {
      callback()
    }
  }
  return mobilePhone
}
// 必填项，数字类型校验
export function queryNum () {
  var queryNum = (rule, value, callback) => {
    var re = /^[0-9]\d*$/
    if (!value) {
      return callback(new Error('此项为必填项'))
    } else if (!re.test(value)) {
      callback(new Error('只能是数字'))
    } else {
      callback()
    }
  }
  return queryNum
}
// 不是必填项，数字类型校验
export function num () {
  var num = (rule, value, callback) => {
    var re = /^[0-9]\d*$/
    if (!value) {
      callback()
    } else if (!re.test(value)) {
      callback(new Error('只能是数字'))
    } else {
      callback()
    }
  }
  return num
}
// 校验必填
export function fill () {
  var fill = (rule, value, callback) => {
    if (!value) {
      return callback(new Error('此项为必填项'))
    } else {
      callback()
    }
  }
  return fill
}
// 校验必选
export function redio () {
  var redio = function (rule, value, callback) {
    if (!value) {
      return callback(new Error('此项为必选项'))
    } else {
      callback()
    }
  }
  return redio
}
